package com.carrental.auth.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.carrental.auth.dto.LoginDTO;
import com.carrental.auth.dto.RegisterDTO;
import com.carrental.auth.entity.User;
import com.carrental.auth.vo.LoginVO;
import com.carrental.auth.vo.UserInfoVO;

import java.util.List;

/**
 * 用户服务接口
 */
public interface UserService extends IService<User> {

    /**
     * 用户登录
     *
     * @param loginDTO 登录参数
     * @return 登录结果
     */
    LoginVO login(LoginDTO loginDTO);

    /**
     * 用户注册
     *
     * @param registerDTO 注册参数
     * @return 注册结果
     */
    boolean register(RegisterDTO registerDTO);

    /**
     * 获取用户信息
     *
     * @param userId 用户ID
     * @return 用户信息
     */
    UserInfoVO getUserInfo(Long userId);

    /**
     * 刷新token
     *
     * @param token 旧token
     * @return 新token
     */
    String refreshToken(String token);

    /**
     * 退出登录
     *
     * @param token 令牌
     * @return 是否成功
     */
    boolean logout(String token);

    /**
     * 从token中获取用户ID
     *
     * @param token token
     * @return 用户ID
     */
    Long getUserIdFromToken(String token);

    /**
     * 根据用户ID获取角色编码列表
     *
     * @param userId 用户ID
     * @return 角色编码列表
     */
    List<String> getRolesByUserId(Long userId);

    String testPassword(String password);
} 